00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #ifndef DESHARED_HPP
00029 #define DESHARED_HPP
00030
00031
00032
00033
00034
00035
00036
00037 #include "deGlobalTypes.hpp"
00038
00039 #ifdef USING_DESTINY3D
00040 #ifdef _DEBUG
00041
00042 #pragma comment(lib, "deSharedd")
00043 #else
00044 #pragma comment(lib, "deShared")
00045 #endif //_DEBUG
00046 #endif //USING_DESTINY3D
00047
00048
00049
00050
00051
00052
00053 class deRegistry;
00054 class deWinFile;
00055 class deConfigFile;
00056 class deDynamicArray;
00057 class deDynamicList;
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069 typedef enum
00070 {
00071 DEREGISTRY_CLASSES_ROOT,
00072 DEREGISTRY_CURRENT_USER,
00073 DEREGISTRY_LOCAL_MACHINE,
00074 DEREGISTRY_USERS
00075 } deRegistryRootKey;
00076
00077
00078
00079
00080
00081
00082
00083
00084 typedef struct HKEY__* HKEY;
00085
00086 class deRegistry
00087 {
00088 public:
00089 deRegistry();
00090
00091 deBoolean SetRoot(const deRegistryRootKey RootKey);
00092 deBoolean ReadString(const char *Key, const char *ValueName, char *Buffer, int *BufferSize);
00093 deBoolean WriteString(const char *Key, const char *ValueName, const char *Buffer, const int BufferSize);
00094 deBoolean ReadInt(const char *Key, const char *ValueName, int *IntValue);
00095 deBoolean WriteInt(const char *Key, const char *ValueName, const int IntValue);
00096 LONG GetLastReturnCode() { return LastReturnCode; }
00097
00098 private:
00099 HKEY CurrentRootKey;
00100 HKEY CurrentOpenKey;
00101 LONG LastReturnCode;
00102 };
00103
00104
00105
00106
00107
00108
00109
00110
00111
00112
00113
00114 typedef enum
00115 {
00116 DEWINFILE_READONLY,
00117 DEWINFILE_WRITEONLY,
00118 DEWINFILE_READWRITE
00119 } deWinFileAccessType;
00120
00121
00122
00123
00124
00125
00126
00127 typedef enum
00128 {
00129 DEWINFILE_NEW,
00130 DEWINFILE_EXISTS
00131 } deWinFileDisposition;
00132
00133
00134
00135
00136
00137
00138
00139
00140
00141 class deWinFile
00142 {
00143 public:
00144 deWinFile();
00145 ~deWinFile();
00146
00147 deBoolean Open(const char *FileName,
00148 const deWinFileAccessType FileAccessType,
00149 const deWinFileDisposition FileDispositionType);
00150 deBoolean Close(void);
00151 unsigned int Read(void *Buffer, unsigned int BufferSize);
00152 unsigned int Write(void *Buffer, unsigned int BufferSize);
00153 unsigned int GetSize(void);
00154
00155 private:
00156 HANDLE CurrentOpenFile;
00157 };
00158
00159
00160
00161
00162
00163
00164
00165
00166
00167
00168
00169
00170
00171 class deConfigFile
00172 {
00173 public:
00174 deConfigFile(char *FullFilePath);
00175 ~deConfigFile();
00176
00177 deBoolean GetCreationResult(void) { return CreationResult; }
00178 void SetCurrentEntry(unsigned int Entry) { CurrentEntry = Entry; }
00179 char *FindKeyValue(const char *KeyName);
00180 char *FindNextKeyValue(const char *KeyName);
00181 deBoolean GetFirstKeyValue(char **KeyName, char **KeyValue);
00182 deBoolean GetNextKeyValue(char **KeyName, char **KeyValue);
00183 deBoolean GetPreviousKeyValue(char **KeyName, char **KeyValue);
00184
00185 private:
00186 unsigned int LoadFileBuffer(char *FullFilePath);
00187 deBoolean ParseFileBuffer(void);
00188
00189
00190 deBoolean CreationResult;
00191 void *FileBuffer;
00192 deDynamicArray *ConfigKeys;
00193 deDynamicArray *ConfigValues;
00194 int TotalConfigEntries;
00195 int CurrentEntry;
00196 };
00197
00198
00199
00200
00201
00202
00203
00204
00205
00206
00207
00208
00209
00210 class deDynamicArray
00211 {
00212 public:
00213 deDynamicArray(const unsigned int Size, const unsigned int Count);
00214 deDynamicArray(deDynamicArray &deDynamicArraySource);
00215 ~deDynamicArray();
00216
00217 deBoolean GetCreationResult(void) { return CreationResult; }
00218 void SetArrayGrowthRate(unsigned int GrowthRate) { ArrayGrowthRate = GrowthRate; }
00219 unsigned int GetElementSize(void) { return ElementSize; }
00220 unsigned int GetElementCount(void) { return ElementCount; }
00221 void *GetElement(unsigned int Index);
00222 deBoolean SetElement(void *Element, unsigned int Index);
00223
00224 private:
00225 deBoolean GrowArray(unsigned int SizeIncrease);
00226
00227 deBoolean CreationResult;
00228 unsigned int ElementSize;
00229 unsigned int ElementCount;
00230 void *Array;
00231 unsigned int ArrayGrowthRate;
00232 };
00233
00234
00235
00236
00237
00238
00239
00240
00241
00242
00243
00244 typedef enum
00245 {
00246 DEDYNAMICLIST_NOCLEAR,
00247 DEDYNAMICLIST_CLEAR
00248 } deDynamicListClearType;
00249
00250
00251
00252
00253
00254
00255
00256
00257
00258 class deDynamicList
00259 {
00260 public:
00261 deDynamicList(const unsigned int Size,
00262 const unsigned int Count,
00263 const unsigned int Growth,
00264 const deDynamicListClearType ClearType);
00265 deDynamicList(deDynamicList &deDynamicListSource);
00266 ~deDynamicList();
00267
00268 deBoolean GetCreationResult(void) { return CreationResult; }
00269 deBoolean AddElement(void *Element);
00270 deBoolean InsertElementBefore(void *Element);
00271 deBoolean InsertElementAfter(void *Element);
00272 deBoolean DeleteElement(void);
00273 void *GetFirstElement(void);
00274 void *GetNextElement(void);
00275 void *GetPreviousElement(void);
00276 void *GetLastElement(void);
00277
00278 private:
00279 void *FindOpenSlot(void);
00280 deBoolean GrowList(unsigned int SizeIncrease);
00281
00282 deBoolean CreationResult;
00283 void *List;
00284 void *FirstElement;
00285 void *LastElement;
00286 void *CurrentElement;
00287 unsigned int ElementSize;
00288 unsigned int ListEntrySize;
00289 unsigned int GrowthRate;
00290 unsigned int ListSize;
00291 unsigned int CurrentElementCount;
00292 unsigned int ElementOffset;
00293 unsigned int PrevOffset;
00294 unsigned int NextOffset;
00295 deDynamicListClearType ListClearType;
00296 };
00297
00298
00299
00300
00301 #endif //End DESHARED_HPP
00302